.\" Man page generated from reStructuredText.
.
.TH "CEPHFS-SHELL" "8" "Mar 12, 2022" "dev" "Ceph"
.SH NAME
cephfs-shell \- Shell-like tool talking with CephFS
.
.nr rst2man-indent-level 0
.
.de1 rstReportMargin
\\$1 \\n[an-margin]
level \\n[rst2man-indent-level]
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
-
\\n[rst2man-indent0]
\\n[rst2man-indent1]
\\n[rst2man-indent2]
..
.de1 INDENT
.\" .rstReportMargin pre:
. RS \\$1
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
. nr rst2man-indent-level +1
.\" .rstReportMargin post:
..
.de UNINDENT
. RE
.\" indent \\n[an-margin]
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
.nr rst2man-indent-level -1
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.SH 提纲
.nf
\fBcephfs\-shell\fP [options] [command]
\fBcephfs\-shell\fP [options] \-\- [command, command,...]
.fi
.sp
.SH 描述
.sp
CephFS Shell 提供了类似 shell 的命令，可以直接与 Ceph 文件系统交互。
.sp
此工具可以在交互模式下使用，也可以在非交互模式下使用。
在前一种模式下， cephfs\-shell 会打开一个 shell 会话，
在指定命令完成后，它会打印出提示字符串，并无限期等待。
shell 会话完成后， cephfs\-shell 会退出，
其状态码就是执行的最后一个完成命令的返回值。
在非交互式模式下， cephfs\-shell 会发出一个命令，
并且在那个命令执行完毕后带着它的返回值退出。
.sp
CephFS Shell 的行为可以用 \fBcephfs\-shell.conf\fP 调整。
详情见 \fI\%CephFS Shell 配置文件\fP 。
.SH 选项
.INDENT 0.0
.TP
.B \-b, \-\-batch FILE
批处理文件的路径。
.UNINDENT
.INDENT 0.0
.TP
.B \-c, \-\-config FILE
cephfs\-shell.conf 的路径。
.UNINDENT
.INDENT 0.0
.TP
.B \-f, \-\-fs FS
要挂载的文件系统的名字。
.UNINDENT
.INDENT 0.0
.TP
.B \-t, \-\-test FILE
FILE 文件里是供测试的路径名录。
.UNINDENT
.sp
\fBNOTE:\fP
.INDENT 0.0
.INDENT 3.5
cephfs\-shell 依赖最新版的 cmd2 模块。
如果 CephFS 是从源码安装的，在构建目录下执行 cephfs\-shell 即可。
也可以用 virtualenv 这样执行：
.UNINDENT
.UNINDENT
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
[build]$ python3 \-m venv venv && source venv/bin/activate && pip3 install cmd2
[build]$ source vstart_environment.sh && source venv/bin/activate && python3 ../src/tools/cephfs/cephfs\-shell
.ft P
.fi
.UNINDENT
.UNINDENT
.SH 命令
.SS mkdir
.sp
如果指定目录不存在，就创建它们。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
mkdir [\-option] <directory>...
.UNINDENT
.UNINDENT
.INDENT 0.0
.IP \(bu 2
directory \- 将要创建的目录名
.UNINDENT
.INDENT 0.0
.TP
.B 选项：
.INDENT 7.0
.TP
.BI \-m \ MODE
设置新目录的访问模式。
.TP
.B \-p\fP,\fB  \-\-parent
如有必要，创建其父目录。加上此选项后，目录已存在也不会报错。
.UNINDENT
.UNINDENT
.SS put
.sp
把本地文件系统上的一个文件、目录复制到 Ceph 文件系统。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
put [options] <source_path> [target_path]
.UNINDENT
.UNINDENT
.INDENT 0.0
.IP \(bu 2
.INDENT 2.0
.TP
.B source_path \- 要复制到 cephfs 的本地文件、目录的路径
.INDENT 7.0
.IP \(bu 2
如果是 \fI\&.\fP 就复制当前工作目录内的所有文件、目录。
.IP \(bu 2
如果是 \fI\-\fP 就从标准输入读取。
.UNINDENT
.UNINDENT
.IP \(bu 2
.INDENT 2.0
.TP
.B target_path \- 远程目录路径，文件、目录将复制到这里。
.INDENT 7.0
.IP \(bu 2
如果是 \fI\&.\fP ，文件、目录将复制到远程的工作目录内。
.UNINDENT
.UNINDENT
.UNINDENT
.INDENT 0.0
.TP
.B 选项：
.INDENT 7.0
.TP
.B \-f\fP,\fB  \-\-force
如果目的地已存在此文件就覆盖掉它。
.UNINDENT
.UNINDENT
.SS get
.sp
把 Ceph 文件系统上的一个文件复制到本地文件系统。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
get [options] <source_path> [target_path]
.UNINDENT
.UNINDENT
.INDENT 0.0
.IP \(bu 2
.INDENT 2.0
.TP
.B source_path \- 将被复制到本地文件系统的远程文件、目录路径
.INDENT 7.0
.IP \(bu 2
如果是 \fI\&.\fP ，就复制远程工作目录下的所有文件、目录。
.UNINDENT
.UNINDENT
.IP \(bu 2
.INDENT 2.0
.TP
.B target_path \- 本地目录路径，文件、目录将复制到这里。
.INDENT 7.0
.IP \(bu 2
如果是 \fI\&.\fP ，文件、目录就会复制到本地工作目录。
.IP \(bu 2
如果是 \fI\-\fP ，把输出写到标准输出。
.UNINDENT
.UNINDENT
.UNINDENT
.INDENT 0.0
.TP
.B 选项：
.INDENT 7.0
.TP
.B \-f\fP,\fB  \-\-force
如果目的地已存在此文件就覆盖掉它。
.UNINDENT
.UNINDENT
.SS ls
.sp
罗列出当前工作目录内的所有文件和目录。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
ls [option] [directory]...
.UNINDENT
.UNINDENT
.INDENT 0.0
.IP \(bu 2
.INDENT 2.0
.TP
.B directory \- 目录名，会罗列出它里面的文件、目录
.INDENT 7.0
.IP \(bu 2
默认会罗列出当前工作目录内的文件、目录。
.UNINDENT
.UNINDENT
.UNINDENT
.INDENT 0.0
.TP
.B 选项：
.INDENT 7.0
.TP
.B \-l\fP,\fB  \-\-long
以长格式罗列 \- 显示权限
.TP
.B \-r\fP,\fB  \-\-reverse
反向排序
.TP
.B \-H
人类可读
.TP
.BI \-a\fP,\fB  \-a\fB ll
忽略以 . 打头的条目
.TP
.B \-S
按文件尺寸排序
.UNINDENT
.UNINDENT
.SS cat
.sp
连结文件内容并打印在标准输出上。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
cat  <file>....
.UNINDENT
.UNINDENT
.INDENT 0.0
.IP \(bu 2
file \- 文件名
.UNINDENT
.SS cd
.sp
改变当前工作目录。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
cd [directory]
.UNINDENT
.UNINDENT
.INDENT 0.0
.IP \(bu 2
.INDENT 2.0
.TP
.B directory \- 路径、目录名。如果没指定目录，它就改变到根目录。
.INDENT 7.0
.IP \(bu 2
如果是 \(aq..\(aq ，就移动到当前目录的父目录。
.UNINDENT
.UNINDENT
.UNINDENT
.SS cwd
.sp
获取当前工作目录。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
cwd
.UNINDENT
.UNINDENT
.SS quit/Ctrl\-D
.sp
关闭当前 shell 。
.SS chmod
.sp
更改文件、目录的权限。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
chmod <mode> <file/directory>
.UNINDENT
.UNINDENT
.SS mv
.sp
把文件、目录从源头移动到目的地。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
mv <source_path> <destination_path>
.UNINDENT
.UNINDENT
.SS rmdir
.sp
删除一或多个目录。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
rmdir <directory_name>.....
.UNINDENT
.UNINDENT
.SS rm
.sp
删除一或多个文件。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
rm <file_name/pattern>...
.UNINDENT
.UNINDENT
.SS write
.sp
创建并写入一个文件。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
write <file_name>
<Enter Data>
Ctrl+D Exit.
.UNINDENT
.UNINDENT
.SS lls
.sp
罗列指定目录里的所有文件和目录。如果没指定 path ，就会罗列出当前本地目录内的文件和目录。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
lls <path>.....
.UNINDENT
.UNINDENT
.SS lcd
.sp
进入指定的本地目录。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
lcd <path>
.UNINDENT
.UNINDENT
.SS lpwd
.sp
打印出当前本地目录的绝对路径。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
lpwd
.UNINDENT
.UNINDENT
.SS umask
.sp
设置和获取文件模式的创建掩码。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
umask [mode]
.UNINDENT
.UNINDENT
.SS alias
.sp
定义或显示别名。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
alias [name] | [<name> <value>]
.UNINDENT
.UNINDENT
.INDENT 0.0
.IP \(bu 2
name \- 要查询、新增、或替换的别名的名字。
.IP \(bu 2
value \- 别名解析到的内容（新增或删除时），可以包含空格、并且不需要加引号。
.UNINDENT
.SS run_pyscript
.sp
在控制台里运行一个 python 脚本。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
run_pyscript <script_path> [script_arguments]
.UNINDENT
.UNINDENT
.INDENT 0.0
.IP \(bu 2
在这个脚本里，可以用 cmd （你的自定义命令）执行控制台命令。
但是，在这个脚本里你不能运行嵌套的 py 或 pyscript 命令。
包含空格的路径或参数必须用引号括起来。
.UNINDENT
.sp
\fBNOTE:\fP
.INDENT 0.0
.INDENT 3.5
cmd2 版本为 0.9.13 或更低时，此命令名为 \fBpyscript\fP 。
.UNINDENT
.UNINDENT
.SS py
.sp
调用 python 命令、 shell 或脚本。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
py <command>: 执行一个 Python 命令。
py: 进入交互式 Python 模式。
.UNINDENT
.UNINDENT
.SS shortcuts
.sp
列出可用的快捷方式（别名）。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
shortcuts
.UNINDENT
.UNINDENT
.SS history
.sp
查看、运行、编辑、和保存之前输入的命令。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
history [\-h] [\-r | \-e | \-s | \-o FILE | \-t TRANSCRIPT] [arg]
.UNINDENT
.UNINDENT
.INDENT 0.0
.TP
.B 选项：
.INDENT 7.0
.TP
.B \-h
显示此帮助信息而后退出
.TP
.B \-r
运行选定的（多条）历史条目
.TP
.B \-e
编辑而后运行选定的（多条）历史条目
.TP
.B \-s
脚本格式，没有分隔行
.TP
.BI \-o \ FILE
把命令输出到一个脚本文件
.TP
.BI \-t \ TRANSCRIPT
把命令及其结果输出到一个笔录文件
.UNINDENT
.UNINDENT
.SS unalias
.sp
取消别名。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
unalias [\-a] name [name ...]
.UNINDENT
.UNINDENT
.INDENT 0.0
.IP \(bu 2
name \- 要取消的别名名字
.UNINDENT
.INDENT 0.0
.TP
.B 选项：
.INDENT 7.0
.TP
.B \-a
删除所有别名定义
.UNINDENT
.UNINDENT
.SS set
.sp
设置一个可设置参数、或显示参数的当前设置。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
set [\-h] [\-a] [\-l] [settable [settable ...]]
.UNINDENT
.UNINDENT
.INDENT 0.0
.IP \(bu 2
调用时不加参数可罗列可设置参数及其取值。
.UNINDENT
.INDENT 0.0
.TP
.B 选项：
.INDENT 7.0
.TP
.B \-h
显示此帮助信息而后退出
.TP
.B \-a
也显示只读设置
.TP
.B \-l
参数的描述函数
.UNINDENT
.UNINDENT
.SS edit
.sp
在一个文本编辑器内编辑文件。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
edit [file_path]
.UNINDENT
.UNINDENT
.INDENT 0.0
.IP \(bu 2
file_path \- 要用编辑器打开的文件路径
.UNINDENT
.SS run_script
.sp
运行脚本文件里的命令，文本编码格式为 ASCII 或 UTF\-8 。
脚本里的各个命令应该用换行符分隔。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
run_script <file_path>
.UNINDENT
.UNINDENT
.INDENT 0.0
.IP \(bu 2
file_path \- 脚本文件的路径
.UNINDENT
.sp
\fBNOTE:\fP
.INDENT 0.0
.INDENT 3.5
cmd2 版本为 0.9.13 或更低时，此命令名为 \fBload\fP 。
.UNINDENT
.UNINDENT
.SS shell
.sp
像在操作系统提示符下一样，执行一个命令。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
shell <command> [arguments]
.UNINDENT
.UNINDENT
.SS locate
.sp
在文件系统里查找一个条目。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
locate [options] <name>
.UNINDENT
.UNINDENT
.INDENT 0.0
.TP
.B 选项：
.INDENT 7.0
.TP
.B \-c
统计找到的条数
.TP
.B \-i
忽略大小写
.UNINDENT
.UNINDENT
.SS stat
.sp
显示文件状态。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
stat [\-h] <file_name> [file_name ...]
.UNINDENT
.UNINDENT
.INDENT 0.0
.TP
.B 选项：
.INDENT 7.0
.TP
.B \-h
显示帮助信息
.UNINDENT
.UNINDENT
.SS snap
.sp
创建或删除快照。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
snap {create|delete} <snap_name> <dir_name>
.UNINDENT
.UNINDENT
.INDENT 0.0
.IP \(bu 2
snap_name \- 要创建或删除的快照名。
.IP \(bu 2
dir_name \- 目录，将在它下面创建或删除快照
.UNINDENT
.SS setxattr
.sp
设置一个文件的扩展属性。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
setxattr [\-h] <path> <name> <value>
.UNINDENT
.UNINDENT
.INDENT 0.0
.IP \(bu 2
path \- 文件的路径
.IP \(bu 2
name \- 查看或设置的扩展属性名字。
.IP \(bu 2
value \- 要设置的扩展属性值。
.UNINDENT
.INDENT 0.0
.TP
.B 选项：
.INDENT 7.0
.TP
.B \-h\fP,\fB  \-\-help
显示帮助信息
.UNINDENT
.UNINDENT
.SS getxattr
.sp
获取指定路径和名字的扩展属性的值。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
getxattr [\-h] <path> <name>
.UNINDENT
.UNINDENT
.INDENT 0.0
.IP \(bu 2
path \- 文件的路径
.IP \(bu 2
name \- 要获取或设置的扩展属性名
.UNINDENT
.INDENT 0.0
.TP
.B 选项：
.INDENT 7.0
.TP
.B \-h\fP,\fB  \-\-help
显示帮助信息
.UNINDENT
.UNINDENT
.SS listxattr
.sp
罗列指定路径的扩展属性名。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
listxattr [\-h] <path>
.UNINDENT
.UNINDENT
.INDENT 0.0
.IP \(bu 2
path \- 文件的路径
.UNINDENT
.INDENT 0.0
.TP
.B 选项：
.INDENT 7.0
.TP
.B \-h\fP,\fB  \-\-help
显示帮助信息
.UNINDENT
.UNINDENT
.SS df
.sp
显示可用磁盘空间的数量。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
df [\-h] [file [file ...]]
.UNINDENT
.UNINDENT
.INDENT 0.0
.IP \(bu 2
file \- 文件名
.UNINDENT
.INDENT 0.0
.TP
.B 选项：
.INDENT 7.0
.TP
.B \-h\fP,\fB  \-\-help
显示帮助信息
.UNINDENT
.UNINDENT
.SS du
.sp
显示一个目录占用的磁盘空间。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
du [\-h] [\-r] [paths [paths ...]]
.UNINDENT
.UNINDENT
.INDENT 0.0
.IP \(bu 2
paths \- 目录名
.UNINDENT
.INDENT 0.0
.TP
.B 选项：
.INDENT 7.0
.TP
.B \-h\fP,\fB  \-\-help
显示帮助信息
.TP
.B \-r
所有目录的递归磁盘占用量。
.UNINDENT
.UNINDENT
.SS quota
.sp
一个目录的配额管理。
.sp
用法：
.INDENT 0.0
.INDENT 3.5
quota [\-h] [\-\-max_bytes [MAX_BYTES]] [\-\-max_files [MAX_FILES]] {get,set} path
.UNINDENT
.UNINDENT
.INDENT 0.0
.IP \(bu 2
{get,set} \- 配额操作类型。
.IP \(bu 2
path \- 目录名.
.UNINDENT
.INDENT 0.0
.TP
.B 选项：
.INDENT 7.0
.TP
.B \-h\fP,\fB  \-\-help
显示帮助信息
.TP
.BI \-\-max_bytes \ MAX_BYTES
设置此目录下数据的最大累计尺寸
.TP
.BI \-\-max_files \ MAX_FILES
设置此目录树下的文件总数
.UNINDENT
.UNINDENT
.SH CEPHFS SHELL 配置文件
.sp
默认情况下， CephFS Shell 会在 \fBCEPHFS_SHELL_CONF\fP 环境变量里的路径内寻找
\fBcephfs\-shell.conf\fP ，而后才是用户的家目录（ \fB~/.cephfs\-shell.conf\fP ）。
.sp
现在， CephFS Shell 从它依赖的 \fBcmd2\fP 那里继承了所有选项，
因此，这些选项可能会因你安装的 \fBcmd2\fP 版本而有很大差异。
关于这些选项的描述可以参考 \fBcmd2\fP 文档。
.sp
下面是个 \fBcephfs\-shell.conf\fP 样板：
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
[cephfs\-shell]
prompt = CephFS:~/>>>
continuation_prompt = >

quiet = False
timing = False
colors = True
debug = False

abbrev = False
autorun_on_edit = False
echo = False
editor = vim
feedback_to_output = False
locals_in_py = True
.ft P
.fi
.UNINDENT
.UNINDENT
.SH 退出代码
.sp
cephfs shell 能够返回下列退出代码：
.TS
center;
|l|l|.
_
T{
错误类型
T}	T{
退出代码
T}
_
T{
Miscellaneous
T}	T{
1
T}
_
T{
Keyboard Interrupt
T}	T{
2
T}
_
T{
Operation not permitted
T}	T{
3
T}
_
T{
Permission denied
T}	T{
4
T}
_
T{
No such file or directory
T}	T{
5
T}
_
T{
I/O error
T}	T{
6
T}
_
T{
No space left on device
T}	T{
7
T}
_
T{
File exists
T}	T{
8
T}
_
T{
No data available
T}	T{
9
T}
_
T{
Invalid argument
T}	T{
10
T}
_
T{
Operation not supported on transport endpoint
T}	T{
11
T}
_
T{
Range error
T}	T{
12
T}
_
T{
Operation would block
T}	T{
13
T}
_
T{
Directory not empty
T}	T{
14
T}
_
T{
Not a directory
T}	T{
15
T}
_
T{
Disk quota exceeded
T}	T{
16
T}
_
T{
Broken pipe
T}	T{
17
T}
_
T{
Cannot send after transport endpoint shutdown
T}	T{
18
T}
_
T{
Connection aborted
T}	T{
19
T}
_
T{
Connection refused
T}	T{
20
T}
_
T{
Connection reset
T}	T{
21
T}
_
T{
Interrupted function call
T}	T{
22
T}
_
.TE
.SH 相关文件
.sp
\fB~/.cephfs\-shell.conf\fP
.SH COPYRIGHT
2010-2014, Inktank Storage, Inc. and contributors. Licensed under Creative Commons Attribution Share Alike 3.0 (CC-BY-SA-3.0)
.\" Generated by docutils manpage writer.
.
